reflectionResolver = $reflectionResolver; } /** * @param \PhpParser\Node\Expr\FuncCall|\PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\MethodCall $call */ public function hasVariadicParameters($call) : bool { $functionLikeReflection = $this->reflectionResolver->resolveFunctionLikeReflectionFromCall($call); if ($functionLikeReflection === null) { return \false; } return $this->hasVariadicVariant($functionLikeReflection); } /** * @param \PHPStan\Reflection\MethodReflection|\PHPStan\Reflection\FunctionReflection $functionLikeReflection */ private function hasVariadicVariant($functionLikeReflection) : bool { foreach ($functionLikeReflection->getVariants() as $parametersAcceptor) { // can be any number of arguments → nothing to limit here if ($parametersAcceptor->isVariadic()) { return \true; } } return \false; } }